﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeTop.复习九月份
{
    public class Solution3
    {
        public int LengthOfLongestSubstring(string s)
        {
            int res = 0;
            int len = s.Length;
            HashSet<char> map = new HashSet<char>();
            int index = -1;
            for (int i = 0; i < len; i++)
            {
                if (i != 0)
                {
                    map.Remove(s[i - 1]);
                }

                while (index + 1 < len && !map.Contains(s[index + 1]))
                {
                    map.Add(s[index + 1]);
                    index++;
                }

                res = Math.Max(res, index - i + 1);
            }

            return res;
        }

        public int LengthOfLongestSubstring1(string s)
        {
            int res = 0;
            int len = s.Length;
            HashSet<char> map = new HashSet<char>();
            int index = 0;
            for (int i = 0; i < len; i++)
            {
                while (index < len && !map.Contains(s[index]))
                {
                    map.Add(s[index]);
                    index++;
                    res = Math.Max(res, map.Count);
                }
                if (map.Count > 0)
                {
                    map.Remove(s[i]);
                }
            }

            return res;
        }
    }
}